package com.fcscs.cservice.dao;

import java.util.Date;
import java.util.List;

import org.springframework.stereotype.Repository;

import com.fcscs.cservice.domain.ChargeCategory;
import com.fcscs.cservice.domain.InRoomOrder;
import com.fcscs.cservice.domain.InRoomOrderCharge;
import com.fcscs.cservice.domain.InRoomOrderItem;
import com.fcscs.cservice.domain.InRoomOrderItemCharge;
import com.fcscs.cservice.domain.model.InRoomOrderView;
import com.fcscs.cservice.domain.model.OrderView;

@Repository
public interface InRoomDao {
	
	OrderView getOrderView(long id);
	
	boolean updateInRoomOrder(long id, String status);
	
	List<InRoomOrderView> getInRoomOrderHistory(long guestProfileId, int start, int numResults);
	
	int getInRoomOrderHistoryCnt(long guestProfileId);
	
	List<InRoomOrderView> findInRoomOrders(long orgId, long propId, Date startTime, Date endTime,
			String firstName, String lastName, String status, Long categoryId, String roomNo, int start, int numResults);
	
	int findInRoomOrdersCnt(long orgId, long propId, Date startTime, Date endTime, String firstName,
			String lastName, String status, Long categoryId, String roomNo);

	List<InRoomOrderView> findInRoomOrders(long orgId, long propId, Date startTime, Date endTime, int start,
			int numResults);

	int findInRoomOrdersCnt(long orgId, long propId, Date startTime, Date endTime);

	InRoomOrderItemCharge saveInRoomOrderItemCharge(InRoomOrderItemCharge rsv);

	InRoomOrderItem saveInRoomOrderItem(InRoomOrderItem rsv);
	
	boolean deleteCookOptions(long orderItemId);
	
	boolean saveCookOption(long orderItemId, long cookOptionItemId);
	
	List<Long> getCookOptions(long orderItemId);

	InRoomOrderCharge saveInRoomOrderCharge(InRoomOrderCharge rsv);

	InRoomOrder saveInRoomOrder(InRoomOrder rsv);
	
	ChargeCategory getChargeCategory(long id);
	
}
